package com.ruoyi.common.utils;

import java.io.File;

public class RenameImagesWithPrefix {
    public static void main(String[] args) {
        // ===================== 1. 配置参数（需替换为实际路径/前缀） =====================
        String imageDir = "C:\\Users\\lenovo\\Desktop\\5913 7284 0XXX_Xiaomi"; // 图片所在文件夹路径
        String oldPrefix = "16～30岁";               // 要替换的原始前缀（如 people1）
        String newPrefix = "60岁以上";               // 目标前缀（指定数字，如 people5）

        // 检查文件夹合法性
        File dir = new File(imageDir);
        if (!dir.exists() || !dir.isDirectory()) {
            System.out.println("[错误] 文件夹不存在或无效：" + imageDir);
            return;
        }

        // ===================== 2. 遍历文件夹内所有文件 =====================
        File[] files = dir.listFiles();
        if (files == null) {
            System.out.println("[警告] 文件夹为空或无法读取：" + imageDir);
            return;
        }

        // 逐个处理文件
        for (File file : files) {
            if (file.isFile()) { // 仅处理文件（跳过子文件夹）
                String fileName = file.getName();

                // 3. 检查是否为图片文件（通过扩展名判断）
                if (!isImageFile(fileName)) {
                    System.out.println("[跳过] 非图片文件：" + fileName);
                    continue;
                }

                // 4. 检查文件名是否包含要替换的前缀
                if (fileName.contains(oldPrefix)) {
                    // 生成新文件名：替换前缀（若需仅替换第一个匹配项，用 replaceFirst）
                    String newFileName = fileName.replace(oldPrefix, newPrefix);
                    File newFile = new File(dir, newFileName);

                    // 5. 检查新文件是否已存在（避免覆盖）
                    if (newFile.exists()) {
                        System.out.println("[跳过] 新文件已存在：" + newFileName);
                        continue;
                    }

                    // 6. 执行重命名并输出结果
                    boolean isRenamed = file.renameTo(newFile);
                    if (isRenamed) {
                        System.out.println("[成功] 重命名：" + fileName + " → " + newFileName);
                    } else {
                        System.out.println("[失败] 重命名：" + fileName);
                    }
                } else {
                    System.out.println("[跳过] 文件名不含目标前缀：" + fileName);
                }
            }
        }
    }

    /**
     * 辅助方法：判断文件是否为图片（匹配常见扩展名）
     * @param fileName 文件名
     * @return 是否为图片文件
     */
    private static boolean isImageFile(String fileName) {
        String lowerCaseName = fileName.toLowerCase();
        // 可根据需求扩展支持的格式（如 .webp, .tiff 等）
        return lowerCaseName.endsWith(".jpg")
                || lowerCaseName.endsWith(".jpeg")
                || lowerCaseName.endsWith(".png")
                || lowerCaseName.endsWith(".bmp")
                || lowerCaseName.endsWith(".gif");
    }
}
